The present invention relates to a document management system, and more particularly to a document management system having a configuration integrating both an environment for executing an object and an environment for executing an agent, and means for changing an agent into a object. The means for changing an agent into an object is applicable not only to document management systems but also to general computer systems.
As recent document management systems become large and highly sophisticated, the functions of the document management systems are frequently extended. These systems require highly extendable and flexible architectures in order to facilitate function extensions and modifications. Once a document management system is incorporated, it is used for a long period while its functions are being extended. Therefore, such a system requires an architecture of high stability and easy maintenance.
First conventional techniques for such a system configuration are an object-oriented approach: "Object-Oriented Analysis and Design" by Shinich HONIDEN and Akihiro YAMASHIRO, Journal of Information Processing Society of Japan, Vol. 35, No. 5, 1994 (hereinafter called Prior Art 1). According to the object-oriented approach described in this paper, a subject in real world (called an object) and an interconnection between subjects (called a relationship) are taken into consideration, each object is assigned a task, and each object requests an another object to execute a particular task. Introduction of this object-oriented paradigm, simulating approximately to modelling and encapsulating of real subject world, makes the change range of a system be localized, and each process is executed like a component by an object. Therefore, productivity of adding a function can be improved.
Attention has recently been drawn to a distributed object-oriented approach in which a plurality of hardware components and objects on OSes connected by a network can be cooperated: "Latest Object-Oriented Practice Guide" by Nikkei BP Ltd., 1995 (hereinafter called Prior Art 2).
Second conventional techniques are an agent-oriented approach: "Agent-Oriented Computing" by Tetsuo KINOSHITA and Kenji SUGAHARA, Soft Research Center, 1995 (hereinafter called Prior Art 3). An agent is defined as a processor which recognizes a status in accordance with an interaction with external environments or proceeds autonomous problem solution toward a target in cooperation with another agent. A system comprises intelligent and self-complete agents as main system elements. Each agent dynamically and flexibly interacts with another agent by using common language, i.e., agent communication language. Operation of an agent itself and cooperation with another agent provide system functions.
Object-oriented technologies have been recently used for providing particular means for efficiently developing highly sophisticated software. An agent-oriented system using such an object-oriented architecture as its basic technologies has been developed: "KQML as an Agent Communication Language", by Tim Finin, Richard Fritzson, Don McKay, and Robin McEntire, The proceedings of the Third International Conference on Information and Knowledge Management, ACM Press, November 1994 (hereinafter called Prior Art 4). An agent-oriented architecture is configured on an object-oriented architecture. An agent can be considered as an object having functions extended by the agent-oriented approach. The functions extended by the agent-oriented approach include two functions: a cooperation mechanism through intermediation and a mobile agent. These two functions will be described in the following.
FIG. 2 is a diagram illustrating communications between agents using the cooperation mechanism through intermediation described, for example, in Prior Art 4. In FIG. 2, reference numerals 101 and 103 represent an agent, and reference numeral 102 represents a cooperation promoter (or facilitator) having a support function of cooperation between agents. In this configuration, first the agent 103 notifies (110) the cooperation promotor 102 of functions the agent 103 can provide. The succeeding operation of issuing a processing request from the agent 101 and executing the process in cooperation with another agent (agent 103) will be described. It is assumed here that the agent 101 has no knowledge of the agent 103 to which a processing request message is transmitted. If the agent has knowledge of the other agent to which a processing request message is transmitted, the agent directly communicates with the other agent. If not as in this example, the agent transmits a processing request message (111) to the cooperation promoter 102. The cooperation promoter 102 received the processing request message checks whether there is a function capable of processing the request, among the pre-notified functions of the agent 103. It is assumed here that the process can be executed by using one of the functions notified by the agent 103 to the cooperation promoter 102. The cooperation promoter 102 transfers the processing request message (112) to the agent 113. The agent 103 received the processing request message (112) executes the process and returns an executed result (113) to the cooperation promoter 102. The cooperation promoter 102 received the processed result (113) from the agent 103 transfers (114) the processed result to the agent 101. A series of operations responsive to the processing request message (111) from the agent 101 is completed in the above manner.
In the above manner, cooperation processing of the agents 101 and 103 is executed by using the cooperation promoter 102 as intermediation. The communication protocol illustrated in FIG. 2 is only one example of the cooperation mechanism through intermediation. In Prior Art 4, other three cases of communication protocols using the cooperation mechanism through intermediation are described. An agent using the cooperation mechanism through intermediation is not necessary to have knowledge of the partner agent to be cooperated, and the cooperation method between the agents is determined by the cooperation promoter when executing the process. Therefore, all functions are not necessary to be designed and developed when the system is configured, and so a change in the system configuration and addition of new services can be dealt with easily without changing the processes to be executed by other agents. Further, even if some services are stopped at some agents, these services can be used by activating other alternative agents if they support such services.
FIG. 3 is a conceptual diagram illustrating a mobile agent described, for example, in Prior Art 3. In FIG. 3, reference numeral 121 represents an operation environment (user place) of a moving originating agent, reference numeral 122 represents an operation environment (server place) of a moving destination agent, reference numeral 123 represents a communication network interconnecting the moving originating agent execution environment 121 and the moving destination agent execution environment 122, reference numeral 124 represents a mobile client agent, reference numeral 125 represents a server agent, and reference numerals 126a and 126b represent an agent execution engine. The operation of the client agent 124 in the above system configuration will be described. First, the client agent 124 is activated by the agent execution engine 126a of the moving originating agent execution environment 121. If a moving method (in FIG. 3, go method) is executed in this activated state, the client agent 124 moves via the network 123 to the moving destination agent execution environment 122 defined as a moving destination, and continues to execute a process in cooperation with the server agent 125. Such an agent as the client agent 124 moving in an activated state to another agent execution environment and continuing to execute a process, is called a mobile agent.
Since a mobile agent can move to a desired site when necessary, software of this agent is not required to be distributed to or installed in, in advance, to a client or server requiring it. Since the agent itself executing a process moves to the execution environment, communication cost can be expected to be reduced. For example, in a frame work of a conventional client/server system, a plurality of messages are necessary to be exchanged between a client and a server in order for the client to access or update a file on the server. In contrast, the file update process can be executed if the mobile agent is moved once to the server, so that message communications are unnecessary for the file update process and there is no time required for the message exchange (Prior Art 3).